home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 92 / 092.d81 / toolbox.sda / TOOLBOX SOURCE < prev   
Text File  |  2022-08-26  |  11KB  |  1,205 lines

  1. open =$ffc0
  2. readst =$ffb7
  3. setlfs =$ffba
  4. setnam =$ffbd
  5. setmsg =$ff90
  6. load =$ffd5
  7. getin =$ffe4
  8. input'buffer =512
  9. clrchn =$ffcc
  10. close =$ffc3   ;a
  11. chrin =$ffcf
  12. chkout =$ffc9  ;x
  13. chkin =$ffc6   ;x
  14. plot =$fff0
  15. chrout =$ffd2
  16. color'pointer =243
  17. screen'line'pointer =209
  18. print'number =$bdcd ;x,a
  19. clear'line =59903
  20. background =53281
  21. border =53280
  22. strout = $ab1e; .A low .Y high
  23. unlisten =$ffae
  24. clall =$ffe7
  25. color1 =53282
  26. color2 =53283
  27. color3 =53284
  28. white =5
  29. crsr'down =17
  30. rvs'on =18
  31. home =19
  32. del =20
  33. red =28
  34. crsr'right =29
  35. green =30
  36. blue =31
  37. black =144
  38. lowercase =14
  39. uppercase =142
  40. crsr'up =145
  41. rvs'off =146
  42. clr =147
  43. insert =148
  44. brown =149
  45. light'red =150
  46. dark'grey =151
  47. medium'grey =152
  48. light'green =153
  49. light'blue =154
  50. light'grey =155
  51. purple =156
  52. crsr'left =157
  53. yellow =158
  54. cyan =159
  55. top'left =176
  56. top'right =174
  57. bottom'left =173
  58. bottom'right =189
  59.  
  60. .org $c000
  61. .obj "@0:toolbox c000"
  62. .mem
  63. jmp menu'entry
  64. jmp box'entry  ;     +3
  65. jmp screen'stash;    +6
  66. jmp screen'restore;  +9
  67. jmp linx;            +12
  68. jmp print'at;        +15
  69. jmp center;          +18
  70. jmp ucase;           +21
  71. jmp lcase;           +24
  72. jmp fcase;           +27
  73. jmp bload;           +30
  74. jmp rload;           +33
  75. jmp pfill;           +36
  76. jmp p2fill;          +39
  77. jmp brancher;        +42
  78. jmp bput;            +45
  79. jmp rbput;           +48
  80. jmp dir;             +51
  81. jmp doodle;          +54
  82. jmp reader;          +57
  83. jmp char'repeat;     +60
  84.  
  85.  
  86. ;***sys addr,x,to x,y,to y,s-code,color
  87.  
  88. box'entry lda #0
  89. sta temp
  90. - jsr get'number
  91. ldy temp
  92. sta parms,y
  93. inc temp
  94. cpy #5
  95. bne -
  96.  
  97. fill'box jsr linx
  98. lda 214
  99. pha
  100. lda 211
  101. pha
  102. box'start ldx parms+2
  103. ldy #0
  104. clc
  105. jsr $fff0
  106. dec parms
  107.  
  108. - ldy parms+1
  109. - lda parms+4
  110. cmp #255
  111. beq +
  112. sta (209),y
  113. + lda parms+5
  114. sta (243),y
  115. dey
  116. cpy parms
  117. bne -
  118. lda 214
  119. cmp parms+3
  120. beq +
  121.  
  122. inc 214
  123. jsr 58732
  124. jmp --
  125. + lda #home
  126. jsr $ffd2
  127. pla
  128. sta 211
  129. pla
  130. sta 214
  131. jmp 58732
  132.  
  133. linx ldy #24
  134. - lda 217,y
  135. ora #128
  136. sta 217,y
  137. dey
  138. bpl -
  139. rts
  140.  
  141. screen'stash jsr get'number
  142. sta 252
  143. cmp >1024
  144. bcs +
  145. rts
  146.  
  147. + clc
  148. adc #4
  149. sta 254
  150. lda #0
  151. sta 253
  152. sta 251
  153.  
  154. lda #home
  155. jsr chrout
  156. sei
  157. lda #0
  158. sta 1
  159.  
  160. ldx #3
  161. ldy #0
  162. - lda (209),y
  163. sta (251),y
  164. dec 1
  165. lda (243),y
  166. inc 1
  167. sta (253),y
  168. iny
  169. bne -
  170. inc 210
  171. inc 252
  172. inc 244
  173. inc 254
  174. dex
  175. bpl -
  176. lda #$77
  177. sta 1
  178. cli
  179. lda #home
  180. jmp chrout
  181.  
  182. screen'restore jsr get'number
  183. sta 252
  184. clc
  185. adc #4
  186. sta 254
  187. lda #0
  188. sta 253
  189. sta 251
  190.  
  191. lda #home
  192. jsr chrout
  193.  
  194. sei
  195. lda #0
  196. sta 1
  197.  
  198. ldx #3
  199. ldy #0
  200.  
  201. - lda (251),y
  202. sta (209),y
  203. lda (253),y
  204. dec 1
  205. sta (243),y
  206. inc 1
  207. iny
  208. bne -
  209. inc 210
  210. inc 252
  211. inc 244
  212. inc 254
  213. dex
  214. bpl -
  215. lda #$77
  216. sta 1
  217. cli
  218. lda #home
  219. jmp chrout
  220.  
  221. menu'entry lda #0
  222. sta temp
  223. sta flag
  224. - jsr get'number
  225. ldy temp
  226. sta menuy,y
  227. inc temp
  228. cpy #6
  229. bne -
  230.  
  231. menu jsr linx
  232. ldx menuy
  233. ldy #0
  234. sty menu'current
  235. clc
  236. jsr plot
  237.  
  238. lda menu'highlight
  239. sta mcolor
  240. jsr paint'line
  241.  
  242. menu'wait jsr getin
  243. beq menu'wait
  244.  
  245. ldx menu'current
  246. stx temp
  247.  
  248. cmp #crsr'down
  249. beq menu'down
  250.  
  251. cmp #crsr'up
  252. beq menu'up
  253.  
  254. cmp #13
  255. beq menu'select
  256.  
  257. cmp exit'key
  258. bne menu'wait'loop
  259. dec flag
  260. bmi menu'select
  261.  
  262. menu'wait'loop jmp menu'wait
  263.  
  264. menu'down inc menu'current
  265. lda menu'current
  266. cmp menu'items
  267. bne highlight
  268. lda #0
  269. sta menu'current
  270. jmp highlight
  271.  
  272. menu'up dec menu'current
  273. lda menu'current
  274. cmp #255
  275. beq +
  276. jmp highlight
  277.  
  278. + ldy menu'items
  279. dey
  280. sty menu'current
  281. jmp highlight
  282.  
  283. menu'select lda menu'current
  284. clc
  285. adc menuy
  286. tax
  287. ldy #0
  288. jsr plot
  289. lda menu'text
  290. sta mcolor
  291. jsr paint'line
  292.  
  293. bit flag
  294. bmi +
  295. lda menu'current
  296. clc
  297. adc #49
  298. sta 631
  299. lda #1
  300. sta 198
  301. + rts
  302.  
  303. highlight lda menuy
  304. clc
  305. adc menu'current
  306. tax
  307. ldy #0
  308. clc
  309. jsr plot
  310. lda menu'highlight
  311. sta mcolor
  312. jsr paint'line
  313.  
  314. lda menuy
  315. clc
  316. adc temp
  317. tax
  318. ldy #0
  319. clc
  320. jsr plot
  321. lda menu'text
  322. sta mcolor
  323. jsr paint'line
  324.  
  325. jmp menu'wait
  326.  
  327. paint'line ldy menux1
  328. - lda mcolor
  329. sta (243),y
  330. bmi +
  331. lda (209),y
  332. eor #128
  333. sta (209),y
  334. + iny
  335. cpy menux2
  336. beq -
  337. bcc -
  338. rts
  339.  
  340. ;**** get number from BASIC ****
  341.  
  342. get'number jsr $aefd
  343. jsr $ad8a
  344. jsr $b7f7
  345. lda $14  ; got low byte
  346. rts
  347.  
  348.  
  349. ;***** get string from BASIC ****
  350.  
  351. get'string jsr $aefd
  352. jsr $ad9e
  353. jsr $b6a3
  354.  
  355. ldx $22
  356. ldy $23
  357. rts
  358.  
  359. print'at jsr linx
  360. jsr get'number
  361. sta 211
  362. jsr get'number
  363. sta 214
  364. jsr 58732
  365. jsr get'string
  366. sta temp
  367.  
  368. print'string ldy #0
  369. - lda ($22),y
  370. jsr chrout
  371. iny
  372. cpy temp
  373. bne -
  374. rts
  375.  
  376. ucase jsr get'string
  377. sta temp
  378. ldy #0
  379. - lda ($22),y
  380. cmp #65
  381. bcc +
  382. ora #128
  383. sta ($22),y
  384. + iny
  385. cpy temp
  386. bne -
  387. rts
  388.  
  389. lcase jsr get'string
  390. sta temp
  391. ldy #0
  392. - lda ($22),y
  393. and #127
  394. sta ($22),y
  395. iny
  396. cpy temp
  397. bne -
  398. rts
  399.  
  400. fcase lda #255
  401. sta flag
  402. jsr get'string
  403. sta temp
  404. ldy #0
  405. lda ($22),y
  406. cmp #65
  407. bcc +
  408. ora #128
  409. sta ($22),y
  410. + iny
  411. lda #0
  412. sta flag
  413. ldy #1
  414. - lda ($22),y
  415. and #127
  416. sta ($22),y
  417.  
  418. cmp "."
  419. bne +
  420. dec flag
  421. + cmp "!"
  422. bne +
  423. dec flag
  424. + cmp "?"
  425. bne +
  426. dec flag
  427.  
  428. + bit flag
  429. bmi +
  430. iny
  431. cpy temp
  432. bne -
  433. rts
  434.  
  435. + cmp #65
  436. bcc +
  437. ora #128
  438. sta ($22),y
  439. inc flag
  440. + iny
  441. cpy temp
  442. bne -
  443. rts
  444.  
  445. center jsr get'number
  446. tax
  447. ldy #0
  448. clc
  449. jsr plot
  450.  
  451. jsr get'string
  452. sta temp
  453.  
  454. lsr
  455. sta flag
  456. lda #20
  457. sec
  458. sbc flag
  459. sta 211
  460. jsr 58732
  461. jmp print'string
  462.  
  463. bload jsr get'string
  464. jsr setnam
  465. jsr get'number
  466. tax
  467. lda #1
  468. ldy #0
  469. jsr setlfs
  470. jsr get'number
  471. ldx $14
  472. ldy $15
  473. lda #0
  474. jmp load
  475.  
  476. rload jsr get'string
  477. jsr setnam
  478. jsr get'number
  479. tax
  480. lda #2
  481. ldy #2
  482. jsr setlfs
  483. jsr open
  484. jsr get'number
  485. jsr clrchn
  486. ldx #2
  487. jsr chkin
  488.  
  489. ldy #0
  490. - jsr getin
  491. sei
  492. ldx #$74
  493. stx 1
  494. sta ($14),y
  495. inc $14
  496. bne +
  497. inc $15
  498.  
  499. + ldx #$77
  500. stx 1
  501. cli
  502.  
  503. jsr readst
  504. and #64
  505. beq -
  506.  
  507. lda #2
  508. jsr close
  509. jmp clrchn
  510.  
  511. pfill lda #0
  512. sta temp
  513. - jsr get'number
  514. ldy temp
  515. sta parms,y
  516. inc temp
  517. cpy #7
  518. bne -
  519.  
  520. pfill'box jsr linx
  521. lda 214
  522. pha
  523. lda 211
  524. pha
  525. pbox'start lda #147
  526. jsr chrout
  527. ldy #0
  528. sty temp
  529.  
  530. - ldy #0
  531. - lda parms
  532. sta (209),y
  533. lda parms+4
  534. sta (243),y
  535. iny
  536. lda parms+1
  537. sta (209),y
  538. lda parms+5
  539. sta (243),y
  540. dey
  541. jsr q3
  542. iny
  543. iny
  544. cpy #39
  545. bcc -
  546. lda 214
  547. cmp #22
  548. bcs +
  549.  
  550. inc 214
  551. inc 214
  552. jsr 58732
  553. jmp --
  554. + jsr fix'bottom
  555. pla
  556. sta 211
  557. pla
  558. sta 214
  559. jmp 58732
  560.  
  561.  
  562. q3 lda 209
  563. clc
  564. adc #40
  565. sta 251
  566. lda #0
  567. adc 210
  568. sta 252
  569. lda 243
  570. clc
  571. adc #40
  572. sta 253
  573. lda 244
  574. adc #0
  575. sta 254
  576. lda parms+2
  577. sta (251),y
  578. lda parms+6
  579. sta (253),y
  580. iny
  581. lda parms+3
  582. sta (251),y
  583. lda parms+7
  584. sta (253),y
  585. dey
  586. rts
  587.  
  588. fix'bottom lda #22
  589. sta 214
  590. jsr 58732
  591.  
  592. lda 209
  593. clc
  594. adc #80
  595. sta 251
  596. lda #0
  597. adc 210
  598. sta 252
  599. lda 243
  600. clc
  601. adc #80
  602. sta 253
  603. lda #0
  604. adc 244
  605. sta 254
  606.  
  607.  
  608. ldy #39
  609. - lda (209),y
  610. sta (251),y
  611. lda (243),y
  612. sta (253),y
  613. dey
  614. bpl -
  615. rts
  616.  
  617. p2fill lda #0
  618. sta temp
  619. - jsr get'number
  620. ldy temp
  621. sta parms,y
  622. inc temp
  623. cpy #17
  624. bne -
  625.  
  626. p2fill'box jsr linx
  627. lda 214
  628. pha
  629. lda 211
  630. pha
  631. p2box'start lda #19
  632. jsr chrout
  633. ldy #0
  634. sty temp
  635.  
  636. - ldy #0
  637. - lda parms
  638. sta (209),y
  639. lda parms+9
  640. sta (243),y
  641. iny
  642. lda parms+1
  643. sta (209),y
  644. lda parms+10
  645. sta (243),y
  646. iny
  647. lda parms+2
  648. sta (209),y
  649. lda parms+11
  650. sta (243),y
  651. dey
  652. dey
  653. jsr q4
  654. iny
  655. iny
  656. iny
  657. cpy #37
  658. bcc -
  659. lda 214
  660. cmp #21
  661. bcs +
  662.  
  663. inc 214
  664. inc 214
  665. inc 214
  666. jsr 58732
  667. jmp --
  668. + jsr fix'side
  669. pla
  670. sta 211
  671. pla
  672. sta 214
  673. jmp 58732
  674.  
  675.  
  676. q4 lda 209
  677. clc
  678. adc #40
  679. sta 251
  680. lda #0
  681. adc 210
  682. sta 252
  683. lda 243
  684. clc
  685. adc #40
  686. sta 253
  687. lda 244
  688. adc #0
  689. sta 254
  690. lda parms+3
  691. sta (251),y
  692. lda parms+12
  693. sta (253),y
  694. iny
  695. lda parms+4
  696. sta (251),y
  697. lda parms+13
  698. sta (253),y
  699. iny
  700. lda parms+5
  701. sta (251),y
  702. lda parms+14
  703. sta (253),y
  704. dey
  705. dey
  706. lda 251
  707. clc
  708. adc #40
  709. sta 251
  710. lda #0
  711. adc 252
  712. sta 252
  713. lda 253
  714. clc
  715. adc #40
  716. sta 253
  717. lda 254
  718. adc #0
  719. sta 254
  720. lda parms+6
  721. sta (251),y
  722. lda parms+15
  723. sta (253),y
  724. iny
  725. lda parms+7
  726. sta (251),y
  727. lda parms+16
  728. sta (253),y
  729. iny
  730. lda parms+8
  731. sta (251),y
  732. lda parms+17
  733. sta (253),y
  734. dey
  735. dey
  736. rts
  737.  
  738. fix'side lda #19
  739. jsr chrout
  740.  
  741. - ldy #0
  742. lda (209),y
  743. tax
  744. lda (243),y
  745.  
  746. ldy #39
  747. sta (243),y
  748. txa
  749. sta (209),y
  750.  
  751. lda 214
  752. cmp #24
  753. beq +
  754. inc 214
  755. jsr 58732
  756. jmp -
  757.  
  758. + lda #21
  759. sta 214
  760. jsr 58732
  761.  
  762. lda 209
  763. clc
  764. adc #120
  765. sta 251
  766. lda #0
  767. adc 210
  768. sta 252
  769. lda 243
  770. clc
  771. adc #120
  772. sta 253
  773. lda #0
  774. adc 244
  775. sta 254
  776.  
  777.  
  778. ldy #39
  779. - lda (209),y
  780. sta (251),y
  781. lda (243),y
  782. sta (253),y
  783. dey
  784. bpl -
  785. rts
  786.  
  787. brancher lda #0
  788. sta flag
  789. jsr get'string
  790. sta temp
  791. - jsr getin
  792. beq -
  793.  
  794. ldy #0
  795. - cmp ($22),y
  796. bne +
  797. iny
  798. tya
  799. clc
  800. adc #48
  801. sta 631
  802. lda #9
  803. sta 198
  804. rts
  805. + iny
  806. cpy temp
  807. bne -
  808. beq --
  809.  
  810. bput jsr get'string
  811. jsr setnam
  812. jsr get'number
  813. tax
  814. lda #1
  815. ldy #1
  816. jsr setlfs
  817. jsr open
  818. jsr get'number
  819. sta 251
  820. lda $15
  821. sta 252
  822. jsr get'number
  823. sta 249
  824. lda $15
  825. sta 250
  826. jsr clrchn
  827. ldx #1
  828. jsr chkout
  829.  
  830. lda 251
  831. jsr chrout
  832. lda 252
  833. jsr chrout
  834.  
  835. bsave ldy #0
  836. - sei
  837. ldx #$74
  838. stx 1
  839. lda (251),y
  840. inc 251
  841. bne +
  842. inc 252
  843.  
  844. + ldx #$77
  845. stx 1
  846. cli
  847.  
  848. jsr chrout
  849. lda 252
  850. cmp 250
  851. bcc -
  852. lda 251
  853. cmp 249
  854. bcc -
  855.  
  856. lda #1
  857. jsr close
  858. jmp clrchn
  859.  
  860. rbput jsr get'string
  861. jsr setnam
  862. jsr get'number
  863. tax
  864. lda #1
  865. ldy #1
  866. jsr setlfs
  867. jsr open
  868. jsr get'number
  869. sta 251
  870. lda $15
  871. sta 252
  872. jsr get'number
  873. sta 249
  874. lda $15
  875. sta 250
  876. jsr clrchn
  877. ldx #1
  878. jsr chkout
  879.  
  880. jsr get'number
  881. jsr chrou